package com.yuanzi.base.auth;

import java.util.Map;

import org.springframework.stereotype.Service;

import com.yuanzi.base.constants.AuthConstants;
import com.yuanzi.base.redis.OuterHashRedisService;

/**
 * 保存成员对案例的关系
 * 案例的操作类型：1 主讲教师;2 助教;3 创建者; 4 学生
 * @author wangzhqf
 * @data 2018年1月16日15:23:40
 *
 */
@Service
public class AuthMemberCaseRedisService {
	
	private static String serviceName = AuthConstants.AUTH_SERVICE_NAME;
	
	/*--------------存储教师对课程的权限：Hash形式：zuul:case_right:memberId(key):courseVersionId(field)=>权限逗号分割(value)---------------*/	
	/**
	 * 获取成员对课程的权限
	 * @author wangzhqf
	 * @param courseVersionId
	 * @param memberId
	 * @return
	 */
	public static String getRightOfMemberOnCase(String memberId, String caseVersionId){
		return OuterHashRedisService.hget(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId, caseVersionId);
	}
	
	/**
	 * 设置成员对课程的权限
	 * @author wangzhqf
	 * @param caseVersionId
	 * @param memberId
	 * @param right
	 */
	public static void setRightOfMemberOnCase(String caseVersionId, String memberId, String right){
		OuterHashRedisService.hset(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId, caseVersionId, right);
	}
	
	/**
	 * 批量设置设置成员对课程的权限(覆盖)
	 * @author wangzhqf
	 * @param memberId
	 * @param caseRightMap
	 */
	public static void setRightOfMemberOnCaseInBatch(String memberId, Map<String, String> caseRightMap){
		OuterHashRedisService.hmset(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId, caseRightMap);
	}
	
	/**
	 * 删除成员对特定课程的权限
	 * @author wangzhqf
	 * @param caseVersionId
	 * @param memberId
	 */
	public static void delRightOfMemberOnCase(Long caseVersionId, Long memberId){
		OuterHashRedisService.hdel(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId.toString(), caseVersionId.toString());
	}
	
	/**
	 * 删除成员对所有课程权限redis
	 * @author wangzhqf
	 * @param memberId
	 */
	public static void delRightOfMemberOnCaseByMemberId(String memberId){
		OuterHashRedisService.del(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId);
	}
	
	/**
	 * 批量删除成员对特定案例权限
	 * @author wangzhqf
	 * @param caseVersionId
	 * @param memberIds
	 */
//	public static void delRightOfMemberOnCaseInCase(String caseVersionId, String... memberIds){
//		if(memberIds.length == 0){
//			return ;
//		}
//		for(String memberId : memberIds){
//			OuterHashRedisService.hdel(serviceName, AuthConstants.REDIS_CASE_RIGHT+memberId, caseVersionId, memberId);
//		}
//	}
}
